package com.crm.service.contactManager;

import com.crm.model.entity.contactManager.ContactDetail;
import com.crm.model.entity.contactManager.ContactInformation;
import com.crm.model.vo.contactManager.ContactInformationVO;

import java.util.List;

/**
 * 联系人管理信息
 */
public interface ContactInformationDbService {

    /**
     * 新增联系方式
     * @param contactInformation 联系方式实体
     * @return
     */
    Boolean addContactInformation(ContactInformation contactInformation);

    /**
     * 联系人-新增联系方式-联系方式重复
     * @param contactId  联系人id
     * @param contactInformation 联系方式
     * @return
     */
    ContactInformation getContactIdAndContactInformation(String contactId, String contactInformation);

    /**
     * 联系人-修改联系方式
     * @param contactInformation 联系方式实体
     * @return
     */
    Boolean updateContactInformation(ContactInformation contactInformation);

    /**
     * 查询是否是主联系人
     * @param contactId  联系人id
     * @param contactInformationType 联系方式类型
     * @return
     */
    List<ContactInformation> getContactIdAndContactInformationType(String contactId, int contactInformationType);

    /**
     * 根据联系人id查询联系人下的联系方式
     * @param order 分组
     * @param contactId 联系人id
     * @return
     */
    List<ContactInformation> contactInformationList(String order, String contactId);

    /**
     * 修改联系方式废止状态
     * @param contactInformation 联系方式实体
     * @return
     */
    Boolean updateAbolishStateById(ContactInformation contactInformation);

    /**
     * 联系人-新增联系人--同一客户下联系方式不能一样
     * @param customerId 客户id
     * @param contactInformation 联系方式
     * @param contactNature  联系人性质  0企业联系人  1非企业联系人
     * @return
     */
    List<ContactInformationVO> getCustomerIdAndContactInformation(String customerId, String contactInformation, String contactNature);

    /**
     * 逻辑删除  联系人下的联系方式
     * @param contactInformation 联系方式实体类
     */
    Boolean deleteContactInformationById(ContactInformation contactInformation);

    /***
     * @Description:根据联系人id和公司id查询联系人信息
     * @Param: contactId联系人id
     * @Param: companyId公司id
     * @Author: luojie
     * @Date: 2021/6/28 14:52
     */
    List<ContactInformation> selectContactInformationByContactIdAndCompanyId(String contactId,String accountId,String companyId);

    /**
     * 通过联系人id修改联系方式表的删除状态
     * @param contactInformation 联系方式实体类
     * @return
     */
    Boolean updateInformation(ContactInformation contactInformation);

    /**
     * 呼叫中心根据手机号和账号Id查询联系人
     * @Author pym
     * @Date  2021/7/1 18:15
     * @param contactInformation 联系方式
     * @param accountId 账号Id
     * @return {@link {com.crm.model.vo.contactManager.ContactInformationVO}}
     */
    ContactInformationVO getContactInformationByContactInfoAndId(String contactInformation, String accountId);

    /**
     * 客户导入判断联系方式是否存在
     * @Author pym
     * @Date  2021/7/2 14:05
     * @param contactId 联系人Id
     * @param contactInformation 联系方式
     * @return {@link {java.lang.Boolean}}
     */
    Boolean isContactInformationRepeat(String contactId, String contactInformation);
}
